/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package servlets;

import acteur.gestionnaires.GestionnaireActeur;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collection;
import javax.ejb.EJB;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import realisateur.gestionnaires.GestionnaireRealisateur;
import utilisateurs.gestionnaires.GestionnaireUtilisateurs;
import utilisateurs.modeles.Utilisateur;

/**
 *
 * @author Marcouss&Ln
 */
@WebServlet(name = "ServletAuthentification", urlPatterns = {"/SerlvetAuthentification"})
public class ServletAuthentification extends HttpServlet {
    @EJB
    private GestionnaireUtilisateurs gestionnaireUtilisateurs;
    @EJB
    private GestionnaireRealisateur gestionnaireRealisateurs;
    @EJB
    private GestionnaireActeur gestionnaireActeurs;
    int page = 1;
    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        String action = request.getParameter("action");
        HttpSession session = request.getSession(true);
        session.setAttribute("page",""+page);
        
        String forwardTo = "";  
        String message = ""; 
        System.out.println("t'es pas connecté? Serlvet Auth");
       
        if (action != null) { 
            
            System.out.println("t'es pas co? Serlvet Auth");
            if (action.equals("connexion")){
                RequestDispatcher dp = request.getRequestDispatcher("connection.jsp");
                dp.forward(request, response);
            }
            if (action.equals("Connect")){ 
                String login = request.getParameter("log");
                String mdp = request.getParameter("pass");
                gestionnaireUtilisateurs.creeUtilisateur("Chamly", "Marc", "Admin", "admin", "mail");
                Boolean bool = gestionnaireUtilisateurs.verifierUtilisateur(login,mdp);
                System.out.println("connect toi");
                if(bool){//(request.getParameter("login").equals("Marcouss") && request.getParameter("password").equals("toto")) {
                    System.out.println("t'es connecté avec le compte "+request.getParameter("log"));
                    session.setAttribute("log", login);
                    /*session.setAttribute("pass",mdp);*/
                    session.setAttribute("connecte", true);
                    System.out.println("t'es connecté avec le compte "+request.getParameter("log"));
                    //forwardTo="index.jsp?action=listerLesUtilisateurs";
                    System.out.println("t'a vu je t'ai dis sa marche");
                    
                    RequestDispatcher dp = request.getRequestDispatcher("index.jsp?action=listerLesUtilisateurs");
                    dp.forward(request, response);
                    
                } 
                else{
                    session.setAttribute("connecte",false);
                    forwardTo="index.jsp?action=listerLesUtilisateurs";
                    message = "Wrong password or login";
                    RequestDispatcher dp = request.getRequestDispatcher("index.jsp?action=listerLesUtilisateurs");
                    dp.forward(request, response);
                }
            }if (action.equals("Inscription")){ 
                String nom = request.getParameter("nom");
                String prenom = request.getParameter("prenom");
                String mail = request.getParameter("mail");
                String login = request.getParameter("log");
                String mdp = request.getParameter("pass");
                String mdp2 = request.getParameter("pass2");
                if(mdp!=mdp2){
                    forwardTo="index.jsp?action=listerLesUtilisateurs";
                    message = "Les 2 mots de passe sont différents";
                    RequestDispatcher dp = request.getRequestDispatcher("index.jsp?action=listerLesUtilisateurs");
                    dp.forward(request, response);
                }
                Collection<Utilisateur> u = gestionnaireUtilisateurs.getUtilisateurLogin(login);
                if(!u.isEmpty()){
                    forwardTo="index.jsp?action=listerLesUtilisateurs";
                    message = "Le login choisi est déjà utilisé. Merci d'en choisir un autre !";
                    RequestDispatcher dp = request.getRequestDispatcher("index.jsp?action=listerLesUtilisateurs");
                    dp.forward(request, response);
                }
                if(u.isEmpty() && (mdp==mdp2)){
                     gestionnaireUtilisateurs.creeUtilisateur(nom, prenom, login, mdp, mail);
                     
                    session.setAttribute("log", login);
                    session.setAttribute("connecte", true);
                    RequestDispatcher dp = request.getRequestDispatcher("index.jsp?action=listerLesUtilisateurs");
                    dp.forward(request, response);
                
                }    
            }
            else if(action.equals("deconnexion")){
                System.out.println("1");
                session.setAttribute("connecte",false);
                System.out.println("2");
                System.out.println("3");
                RequestDispatcher dp = request.getRequestDispatcher("index.jsp?action=listerLesUtilisateurs");
                System.out.println("4");
                dp.forward(request, response);
            }
        }
    }
        
        
        
    

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}